﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
 */
(function () {
    var r = function (c, j) {
        function r() {
            var a = arguments, b = this.getContentElement("advanced", "txtdlgGenStyle");
            b && b.commit.apply(b, a);
            this.foreach(function (b) {
                b.commit && "txtdlgGenStyle" != b.id && b.commit.apply(b, a)
            })
        }

        function i(a) {
            if (!s) {
                s = 1;
                var b = this.getDialog(), d = b.imageElement;
                if (d) {
                    this.commit(f, d);
                    for (var a = [].concat(a), e = a.length, c, g = 0; g < e; g++)(c = b.getContentElement.apply(b, a[g].split(":"))) && c.setup(f, d)
                }
                s = 0
            }
        }

        var f = 1, k = /^\s*(\d+)((px)|\%)?\s*$/i, v = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, o = /^\d+px$/,
            w = function () {
                var a = this.getValue(), b = this.getDialog(), d = a.match(k);
                d && ("%" == d[2] && l(b, !1), a = d[1]);
                b.lockRatio && (d = b.originalElement, "true" == d.getCustomData("isReady") && ("txtHeight" == this.id ? (a && "0" != a && (a = Math.round(d.$.width * (a / d.$.height))), isNaN(a) || b.setValueOf("info", "txtWidth", a)) : (a && "0" != a && (a = Math.round(d.$.height * (a / d.$.width))), isNaN(a) || b.setValueOf("info", "txtHeight", a))));
                g(b)
            }, g = function (a) {
                if (!a.originalElement || !a.preview)return 1;
                a.commitContent(4, a.preview);
                return 0
            }, s, l = function (a,
                                b) {
                if (!a.getContentElement("info", "ratioLock"))return null;
                var d = a.originalElement;
                if (!d)return null;
                if ("check" == b) {
                    if (!a.userlockRatio && "true" == d.getCustomData("isReady")) {
                        var e = a.getValueOf("info", "txtWidth"), c = a.getValueOf("info", "txtHeight"), d = 1E3 * d.$.width / d.$.height, f = 1E3 * e / c;
                        a.lockRatio = !1;
                        !e && !c ? a.lockRatio = !0 : !isNaN(d) && !isNaN(f) && Math.round(d) == Math.round(f) && (a.lockRatio = !0)
                    }
                } else void 0 !== b ? a.lockRatio = b : (a.userlockRatio = 1, a.lockRatio = !a.lockRatio);
                e = CKEDITOR.document.getById(p);
                a.lockRatio ?
                    e.removeClass("cke_btn_unlocked") : e.addClass("cke_btn_unlocked");
                e.setAttribute("aria-checked", a.lockRatio);
                CKEDITOR.env.hc && e.getChild(0).setHtml(a.lockRatio ? CKEDITOR.env.ie ? "■" : "▣" : CKEDITOR.env.ie ? "□" : "▢");
                return a.lockRatio
            }, x = function (a) {
                var b = a.originalElement;
                if ("true" == b.getCustomData("isReady")) {
                    var d = a.getContentElement("info", "txtWidth"), e = a.getContentElement("info", "txtHeight");
                    d && d.setValue(b.$.width);
                    e && e.setValue(b.$.height)
                }
                g(a)
            }, y = function (a, b) {
                function d(a, b) {
                    var d = a.match(k);
                    return d ?
                        ("%" == d[2] && (d[1] += "%", l(e, !1)), d[1]) : b
                }

                if (a == f) {
                    var e = this.getDialog(), c = "", g = "txtWidth" == this.id ? "width" : "height", h = b.getAttribute(g);
                    h && (c = d(h, c));
                    c = d(b.getStyle(g), c);
                    this.setValue(c)
                }
            }, t, q = function () {
                debugger;
                var a = this.originalElement, b = CKEDITOR.document.getById(m);

                //var imageNode = a.$;
                //var nh=imageNode.naturalHeight,
                //    nw=imageNode.naturalWidth;
                //if( isNaN(nh) || isNaN(nw) || nh == 0 || nw == 0 ){
                //    setTimeout( function(){
                //        q;
                //    }, 100 );
                //    return;
                //}

                a.setCustomData("isReady", "true");
                a.removeListener("load", q);
                a.removeListener("error", h);
                a.removeListener("abort", h);
                b && b.setStyle("display", "none");
                this.dontResetSize || x(this);
                this.firstLoad && CKEDITOR.tools.setTimeout(function () {
                        l(this, "check")
                    },
                    0, this);
                this.dontResetSize = this.firstLoad = !1;
                g(this)
            }, h = function () {
                debugger;
                var a = this.originalElement, b = CKEDITOR.document.getById(m);
                a.removeListener("load", q);
                a.removeListener("error", h);
                a.removeListener("abort", h);
                a = CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path + "images/noimage.png");
                this.preview && this.preview.setAttribute("src", a);
                b && b.setStyle("display", "none");
                l(this, !1)
            }, n = function (a) {
                return CKEDITOR.tools.getNextId() + "_" + a
            }, p = n("btnLockSizes"), u = n("btnResetSize"), m = n("ImagePreviewLoader"), A = n("previewLink"),
            z = n("previewImage");
        return {
            title: c.lang.image["image" == j ? "title" : "titleButton"],
            minWidth: 420,
            minHeight: 360,
            onShow: function () {
                this.linkEditMode = this.imageEditMode = this.linkElement = this.imageElement = !1;
                this.lockRatio = !0;
                this.userlockRatio = 0;
                this.dontResetSize = !1;
                this.firstLoad = !0;
                this.addLink = !1;
                var a = this.getParentEditor(), b = a.getSelection(), d = (b = b && b.getSelectedElement()) && a.elementPath(b).contains("a", 1), c = CKEDITOR.document.getById(m);
                c && c.setStyle("display", "none");
                t = new CKEDITOR.dom.element("img",
                    a.document);
                this.preview = CKEDITOR.document.getById(z);
                this.originalElement = a.document.createElement("img");
                this.originalElement.setAttribute("alt", "");
                this.originalElement.setCustomData("isReady", "false");
                if (d) {
                    this.linkElement = d;
                    this.linkEditMode = !0;
                    c = d.getChildren();
                    if (1 == c.count()) {
                        var g = c.getItem(0).getName();
                        if ("img" == g || "input" == g)this.imageElement = c.getItem(0), "img" == this.imageElement.getName() ? this.imageEditMode = "img" : "input" == this.imageElement.getName() && (this.imageEditMode = "input")
                    }
                    "image" ==
                    j && this.setupContent(2, d)
                }
                if (this.customImageElement)this.imageEditMode = "img", this.imageElement = this.customImageElement, delete this.customImageElement; else if (b && "img" == b.getName() && !b.data("cke-realelement") || b && "input" == b.getName() && "image" == b.getAttribute("type"))this.imageEditMode = b.getName(), this.imageElement = b;
                this.imageEditMode ? (this.cleanImageElement = this.imageElement, this.imageElement = this.cleanImageElement.clone(!0, !0), this.setupContent(f, this.imageElement)) : this.imageElement = a.document.createElement("img");
                l(this, !0);
                CKEDITOR.tools.trim(this.getValueOf("info", "txtUrl")) || (this.preview.removeAttribute("src"), this.preview.setStyle("display", "none"));

                CKEDITOR.currentImageDialog = this; //._.element.$;
            },
            onOk: function () {
                if (this.imageEditMode) {
                    var a = this.imageEditMode;
                    "image" == j && "input" == a && confirm(c.lang.image.button2Img) ? (this.imageElement = c.document.createElement("img"), this.imageElement.setAttribute("alt", ""), c.insertElement(this.imageElement)) : "image" != j && "img" == a && confirm(c.lang.image.img2Button) ? (this.imageElement = c.document.createElement("input"),
                        this.imageElement.setAttributes({
                            type: "image",
                            alt: ""
                        }), c.insertElement(this.imageElement)) : (this.imageElement = this.cleanImageElement, delete this.cleanImageElement)
                } else"image" == j ? this.imageElement = c.document.createElement("img") : (this.imageElement = c.document.createElement("input"), this.imageElement.setAttribute("type", "image")), this.imageElement.setAttribute("alt", "");
                this.linkEditMode || (this.linkElement = c.document.createElement("a"));
                this.commitContent(f, this.imageElement);
                this.commitContent(2, this.linkElement);
                if( MWF.xDesktop.uploadedImageId ){
                    this.imageElement.setAttributes({
                        "data-id": MWF.xDesktop.uploadedImageId
                    });
                }
                this.imageElement.setAttributes({
                    "onerror": "MWF.xDesktop.setImageSrc()"
                });
                MWF.xDesktop.uploadedImageId = "";
                this.imageElement.getAttribute("style") || this.imageElement.removeAttribute("style");
                this.imageEditMode ? !this.linkEditMode && this.addLink ? (c.insertElement(this.linkElement), this.imageElement.appendTo(this.linkElement)) : this.linkEditMode && !this.addLink && (c.getSelection().selectElement(this.linkElement), c.insertElement(this.imageElement)) : this.addLink ? this.linkEditMode ? c.insertElement(this.imageElement) : (c.insertElement(this.linkElement), this.linkElement.append(this.imageElement, !1)) : c.insertElement(this.imageElement)
            },
            onLoad: function () {
                "image" != j && this.hidePage("Link");
                var a = this._.element.getDocument();
                this.getContentElement("info", "ratioLock") && (this.addFocusable(a.getById(u), 5), this.addFocusable(a.getById(p), 5));
                this.commitContent = r
            },
            onHide: function () {
                this.preview && this.commitContent(8, this.preview);
                this.originalElement && (this.originalElement.removeListener("load", q), this.originalElement.removeListener("error", h), this.originalElement.removeListener("abort", h), this.originalElement.remove(), this.originalElement = !1);
                delete this.imageElement
            },
            contents: [{
                id: "info", label: c.lang.image.infoTab, accessKey: "I", elements: [{
                    type: "vbox", padding: 0, children: [{
                        type: "hbox", widths: ["280px", "110px"], align: "right", children: [{
                            id: "txtUrl", type: "text", label: c.lang.common.url, required: !0, onChange: function () {
                                var a = this.getDialog(), b = this.getValue();
                                if (0 < b.length) {
                                    var a = this.getDialog(), d = a.originalElement;
                                    if( !d ){
                                        debugger;
                                        d = a.originalElement = a.getParentEditor().document.createElement("img");
                                        d.setAttribute("alt", "");
                                    }
                                    if( !a.preview ) {
                                        a.preview = CKEDITOR.document.getById(z);
                                    }
                                    a.preview && a.preview.removeStyle("display");
                                    d.setCustomData("isReady", "false");
                                    var c = CKEDITOR.document.getById(m);
                                    c && c.setStyle("display",
                                        "");
                                    d.on("load", q, a);
                                    d.on("error", h, a);
                                    d.on("abort", h, a);
                                    d.setAttribute("src", b);
                                    a.preview && (t.setAttribute("src", b), a.preview.setAttribute("src", t.$.src), g(a))
                                } else a.preview && (a.preview.removeAttribute("src"), a.preview.setStyle("display", "none"))
                            }, setup: function (a, b) {
                                if (a == f) {
                                    var d = b.data("cke-saved-src") || b.getAttribute("src");
                                    this.getDialog().dontResetSize = !0;
                                    this.setValue(d);
                                    this.setInitValue()
                                }
                            }, commit: function (a, b) {
                                a == f && (this.getValue() || this.isChanged()) ? (b.data("cke-saved-src", this.getValue()),
                                    b.setAttribute("src", this.getValue())) : 8 == a && (b.setAttribute("src", ""), b.removeAttribute("src"))
                            }, validate: CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)
                        }, {
                            type: "button",
                            id: "browse",
                            style: "display:inline-block;margin-top:14px;",
                            align: "center",
                            label: c.lang.common.browseServer,
                            hidden: !0,
                            filebrowser: "info:txtUrl"
                        }]
                    }]
                }, {
                    type: "hbox",
                    widths: ["27%", "30%", "40%"],
                    hidden: ( c.config.reference && c.config.referenceType ) ? !1 : !0,
                    children: [{
                        type: "button",
                        id: "browseLocal",
                        style: "display:inline-block;margin-bottom:4px;",
                        align: "center",
                        label: "选择本地图片",//c.lang.common.browseServer,
                        hidden: !( c.config.reference && c.config.referenceType ),
                        onClick: function (e) {
                            var fileNode = document.getElementById("fckLocalFileUpload");
                            fileNode.click();
                        },
                        onLoad: function () {
                            //var onImageLoad = function( imageNode ){
                            //    var nh= imageNode.naturalHeight,
                            //        nw= imageNode.naturalWidth;
                            //    if( isNaN(nh) || isNaN(nw) || nh == 0 || nw == 0 ){
                            //        setTimeout( function(){
                            //            onImageLoad();
                            //        }.bind(this), 100 );
                            //    }else{
                            //        var width = Math.min( c.config.localImageMaxWidth , nw );
                            //        var  scale= width/nw,
                            //            w=nw*scale,
                            //            h=nh*scale;
                            //        var canvas = new Element("canvas", {
                            //            width : w,
                            //            height : h
                            //        });
                            //        var	ctx=canvas.getContext('2d');
                            //        ctx.drawImage(imageNode,0,0,nw,nh,0,0,w,h);
                            //        var src=canvas.toDataURL();
                            //        src=src.split(',')[1];
                            //        if(!src){
                            //            MWF.xDesktop.notice("转换图片失败，请联系管理员","error");
                            //            return "";
                            //        }
                            //        src=window.atob(src);
                            //
                            //        var ia = new Uint8Array(src.length);
                            //        for (var i = 0; i < src.length; i++) {
                            //            ia[i] = src.charCodeAt(i);
                            //        }
                            //
                            //        var resizedImage = new Blob([ia], {type: "image/png" });
                            //        var formData = new FormData();
                            //        formData.append('file',resizedImage);
                            //        imageNode.src = "";
                            //        MWF.xDesktop.uploadImage( c.config.reference, c.config.referenceType, formData, resizedImage, function( json ){
                            //            var src = MWF.xDesktop.getImageSrc( json.id );
                            //            MWF.xDesktop.uploadedImageId = json.id;
                            //            txtUrlElement.setValue( src );
                            //        }, function( error ){
                            //            MWF.xDesktop.notice("图片上传失败，请联系管理员"+ error.responseText ,"error");
                            //        } );
                            //    }
                            //};
                            var fileNode = document.getElementById("fckLocalFileUpload");
                            //var imageNode = document.getElementById("fckLocalFileImage");
                            if( !fileNode ){
                                //imageNode = new Element("img", { "id" : "fckLocalFileImage", "styles" : {"display":"none"} }).inject(document.body);
                                fileNode = new Element("input", {
                                    "id" : "fckLocalFileUpload",
                                    "type" : "file",
                                    "accept":"images/*",
                                    "styles" : {"display":"none"}
                                }).inject(document.body);
                                fileNode.addEvent("change", function(event){
                                    var file= fileNode.files[0];
                                    var formData = new FormData();
                                    formData.append('file', file, file.name);
                                    MWF.xDesktop.uploadImageByScale( c.config.reference, c.config.referenceType, 800, formData, file, function( json ){
                                        var src = MWF.xDesktop.getImageSrc( json.id );
                                        MWF.xDesktop.uploadedImageId = json.id;
                                        var txtUrlElement = CKEDITOR.currentImageDialog.getContentElement("info", "txtUrl");
                                        txtUrlElement.setValue( src );
                                    }.bind(this), function( error ){
                                        MWF.xDesktop.notice("图片上传失败，请联系管理员"+ error.responseText ,"error");
                                    });
                                    //var reader=new FileReader();
                                    //reader.onload=function(){
                                    //    this.imageNode.src=reader.result;
                                    //    reader = null;
                                    //    onImageLoad( this.imageNode );
                                    //}.bind(this);
                                    //reader.readAsDataURL(file);
                                }.bind( this ));
                            }
                        }
                    }, {
                        type: "button",
                        id: "browseFiles",
                        style: "display:inline-block;margin-bottom:4px;",
                        align: "center",
                        label: "选择云文件图片",//c.lang.common.browseServer,
                        hidden: !( c.config.reference && c.config.referenceType ), //c.config.filebrowserFilesImage ? !1 : !0, //!0,
                        onClick: function (e) {
                            //c.config.filebrowserFilesImage(e, function (url, base64Code) {
                            //    txtUrlElement.setValue( base64Code || url );
                            //});
                            MWF.xDesktop.requireApp("File", "FileSelector", function(){
                                ( new MWF.xApplication.File.FileSelector( document.body ,{
                                    "style" : "default",
                                    "title": "选择云文件图片",
                                    "reference" :  c.config.reference,
                                    "referenceType" : c.config.referenceType,
                                    "listStyle": "preview",
                                    "selectType" : "images",
                                    "onPostSelectAttachment" : function( url, id ){
                                        MWF.xDesktop.uploadedImageId = id;
                                        //var txtUrlElement = this.getDialog().getContentElement("info", "txtUrl");
                                        var txtUrlElement = CKEDITOR.currentImageDialog.getContentElement("info", "txtUrl");
                                        txtUrlElement.setValue( url );
                                    }.bind(this)
                                })).load();
                            }.bind(this), true);
                        }
                    },{
                        type: "button",
                        id: "browseDocumentAttachment",
                        style: "display:inline-block;margin-bottom:4px;",
                        align: "center",
                        label: "选择本文档图片",//c.lang.common.browseServer,
                        hidden: !0, //c.config.filebrowserCurrentDocumentImage ? !1 : !0,
                        onClick: function (e) {
                            var txtUrlElement = this.getDialog().getContentElement("info", "txtUrl");
                            c.config.filebrowserCurrentDocumentImage(e, function (url, base64Code) {
                                txtUrlElement.setValue( base64Code || url);
                            });
                        }
                    }]
                }, {
                    id: "txtAlt",
                    hidden: !0,
                    type: "text",
                    label: c.lang.image.alt,
                    accessKey: "T",
                    "default": "",
                    onChange: function () {
                        g(this.getDialog())
                    },
                    setup: function (a, b) {
                        a == f && this.setValue(b.getAttribute("alt"))
                    },
                    commit: function (a, b) {
                        a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("alt", this.getValue()) : 4 == a ? b.setAttribute("alt", this.getValue()) : 8 == a && b.removeAttribute("alt")
                    }
                }, {
                    type: "hbox", children: [{
                        id: "basic", type: "vbox", children: [{
                            type: "hbox", requiredContent: "img{width,height}", widths: ["50%", "50%"], children: [{
                                type: "vbox", padding: 1, children: [{
                                    type: "text",
                                    width: "45px",
                                    id: "txtWidth",
                                    label: c.lang.common.width,
                                    onKeyUp: w,
                                    onChange: function () {
                                        i.call(this, "advanced:txtdlgGenStyle")
                                    },
                                    validate: function () {
                                        var a =
                                            this.getValue().match(v);
                                        (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidWidth);
                                        return a
                                    },
                                    setup: y,
                                    commit: function (a, b, d) {
                                        var e = this.getValue();
                                        a == f ? (e && c.activeFilter.check("img{width,height}") ? b.setStyle("width", CKEDITOR.tools.cssLength(e)) : b.removeStyle("width"), !d && b.removeAttribute("width")) : 4 == a ? e.match(k) ? b.setStyle("width", CKEDITOR.tools.cssLength(e)) : (a = this.getDialog().originalElement, "true" == a.getCustomData("isReady") && b.setStyle("width", a.$.width + "px")) : 8 == a && (b.removeAttribute("width"),
                                            b.removeStyle("width"))
                                    }
                                }, {
                                    type: "text",
                                    id: "txtHeight",
                                    width: "45px",
                                    label: c.lang.common.height,
                                    onKeyUp: w,
                                    onChange: function () {
                                        i.call(this, "advanced:txtdlgGenStyle")
                                    },
                                    validate: function () {
                                        var a = this.getValue().match(v);
                                        (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidHeight);
                                        return a
                                    },
                                    setup: y,
                                    commit: function (a, b, d) {
                                        var e = this.getValue();
                                        a == f ? (e && c.activeFilter.check("img{width,height}") ? b.setStyle("height", CKEDITOR.tools.cssLength(e)) : b.removeStyle("height"), !d && b.removeAttribute("height")) :
                                            4 == a ? e.match(k) ? b.setStyle("height", CKEDITOR.tools.cssLength(e)) : (a = this.getDialog().originalElement, "true" == a.getCustomData("isReady") && b.setStyle("height", a.$.height + "px")) : 8 == a && (b.removeAttribute("height"), b.removeStyle("height"))
                                    }
                                }]
                            }, {
                                id: "ratioLock",
                                type: "html",
                                style: "margin-top:30px;width:40px;height:40px;",
                                onLoad: function () {
                                    var a = CKEDITOR.document.getById(u), b = CKEDITOR.document.getById(p);
                                    a && (a.on("click", function (a) {
                                        x(this);
                                        a.data && a.data.preventDefault()
                                    }, this.getDialog()), a.on("mouseover",
                                        function () {
                                            this.addClass("cke_btn_over")
                                        }, a), a.on("mouseout", function () {
                                        this.removeClass("cke_btn_over")
                                    }, a));
                                    b && (b.on("click", function (a) {
                                        l(this);
                                        var b = this.originalElement, c = this.getValueOf("info", "txtWidth");
                                        if (b.getCustomData("isReady") == "true" && c) {
                                            b = b.$.height / b.$.width * c;
                                            if (!isNaN(b)) {
                                                this.setValueOf("info", "txtHeight", Math.round(b));
                                                g(this)
                                            }
                                        }
                                        a.data && a.data.preventDefault()
                                    }, this.getDialog()), b.on("mouseover", function () {
                                        this.addClass("cke_btn_over")
                                    }, b), b.on("mouseout", function () {
                                            this.removeClass("cke_btn_over")
                                        },
                                        b))
                                },
                                html: '<div><a href="javascript:void(0)" tabindex="-1" title="' + c.lang.image.lockRatio + '" class="cke_btn_locked" id="' + p + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + c.lang.image.lockRatio + '</span></a><a href="javascript:void(0)" tabindex="-1" title="' + c.lang.image.resetSize + '" class="cke_btn_reset" id="' + u + '" role="button"><span class="cke_label">' + c.lang.image.resetSize + "</span></a></div>"
                            }]
                        }, {
                            type: "vbox", padding: 1, children: [{
                                type: "text",
                                id: "txtBorder",
                                requiredContent: "img{border-width}",
                                width: "60px",
                                label: c.lang.image.border,
                                "default": "",
                                onKeyUp: function () {
                                    g(this.getDialog())
                                },
                                onChange: function () {
                                    i.call(this, "advanced:txtdlgGenStyle")
                                },
                                validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),
                                setup: function (a, b) {
                                    if (a == f) {
                                        var d;
                                        d = (d = (d = b.getStyle("border-width")) && d.match(/^(\d+px)(?: \1 \1 \1)?$/)) && parseInt(d[1], 10);
                                        isNaN(parseInt(d, 10)) && (d = b.getAttribute("border"));
                                        this.setValue(d)
                                    }
                                },
                                commit: function (a, b, d) {
                                    var c = parseInt(this.getValue(), 10);
                                    a == f || 4 == a ? (isNaN(c) ? !c &&
                                    this.isChanged() && b.removeStyle("border") : (b.setStyle("border-width", CKEDITOR.tools.cssLength(c)), b.setStyle("border-style", "solid")), !d && a == f && b.removeAttribute("border")) : 8 == a && (b.removeAttribute("border"), b.removeStyle("border-width"), b.removeStyle("border-style"), b.removeStyle("border-color"))
                                }
                            }, {
                                type: "text",
                                hidden: !0,
                                id: "txtHSpace",
                                requiredContent: "img{margin-left,margin-right}",
                                width: "60px",
                                label: c.lang.image.hSpace,
                                "default": "",
                                onKeyUp: function () {
                                    g(this.getDialog())
                                },
                                onChange: function () {
                                    i.call(this,
                                        "advanced:txtdlgGenStyle")
                                },
                                validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace),
                                setup: function (a, b) {
                                    if (a == f) {
                                        var d, c;
                                        d = b.getStyle("margin-left");
                                        c = b.getStyle("margin-right");
                                        d = d && d.match(o);
                                        c = c && c.match(o);
                                        d = parseInt(d, 10);
                                        c = parseInt(c, 10);
                                        d = d == c && d;
                                        isNaN(parseInt(d, 10)) && (d = b.getAttribute("hspace"));
                                        this.setValue(d)
                                    }
                                },
                                commit: function (a, b, d) {
                                    var c = parseInt(this.getValue(), 10);
                                    a == f || 4 == a ? (isNaN(c) ? !c && this.isChanged() && (b.removeStyle("margin-left"), b.removeStyle("margin-right")) :
                                        (b.setStyle("margin-left", CKEDITOR.tools.cssLength(c)), b.setStyle("margin-right", CKEDITOR.tools.cssLength(c))), !d && a == f && b.removeAttribute("hspace")) : 8 == a && (b.removeAttribute("hspace"), b.removeStyle("margin-left"), b.removeStyle("margin-right"))
                                }
                            }, {
                                type: "text",
                                hidden: !0,
                                id: "txtVSpace",
                                requiredContent: "img{margin-top,margin-bottom}",
                                width: "60px",
                                label: c.lang.image.vSpace,
                                "default": "",
                                onKeyUp: function () {
                                    g(this.getDialog())
                                },
                                onChange: function () {
                                    i.call(this, "advanced:txtdlgGenStyle")
                                },
                                validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),
                                setup: function (a, b) {
                                    if (a == f) {
                                        var c, e;
                                        c = b.getStyle("margin-top");
                                        e = b.getStyle("margin-bottom");
                                        c = c && c.match(o);
                                        e = e && e.match(o);
                                        c = parseInt(c, 10);
                                        e = parseInt(e, 10);
                                        c = c == e && c;
                                        isNaN(parseInt(c, 10)) && (c = b.getAttribute("vspace"));
                                        this.setValue(c)
                                    }
                                },
                                commit: function (a, b, c) {
                                    var e = parseInt(this.getValue(), 10);
                                    a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) : (b.setStyle("margin-top", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-bottom", CKEDITOR.tools.cssLength(e))),
                                    !c && a == f && b.removeAttribute("vspace")) : 8 == a && (b.removeAttribute("vspace"), b.removeStyle("margin-top"), b.removeStyle("margin-bottom"))
                                }
                            }, {
                                id: "cmbAlign",
                                requiredContent: "img{float}",
                                type: "select",
                                widths: ["35%", "65%"],
                                style: "width:90px",
                                label: c.lang.common.align,
                                "default": "",
                                items: [[c.lang.common.notSet, ""], [c.lang.common.alignLeft, "left"], [c.lang.common.alignRight, "right"]],
                                onChange: function () {
                                    g(this.getDialog());
                                    i.call(this, "advanced:txtdlgGenStyle")
                                },
                                setup: function (a, b) {
                                    if (a == f) {
                                        var c = b.getStyle("float");
                                        switch (c) {
                                            case "inherit":
                                            case "none":
                                                c = ""
                                        }
                                        !c && (c = (b.getAttribute("align") || "").toLowerCase());
                                        this.setValue(c)
                                    }
                                },
                                commit: function (a, b, c) {
                                    var e = this.getValue();
                                    if (a == f || 4 == a) {
                                        if (e ? b.setStyle("float", e) : b.removeStyle("float"), !c && a == f)switch (e = (b.getAttribute("align") || "").toLowerCase(), e) {
                                            case "left":
                                            case "right":
                                                b.removeAttribute("align")
                                        }
                                    } else 8 == a && b.removeStyle("float")
                                }
                            }]
                        }]
                    }, {
                        type: "vbox", height: "250px", children: [{
                            type: "html",
                            id: "htmlPreview",
                            style: "width:95%;",
                            html: "<div>" + CKEDITOR.tools.htmlEncode(c.lang.common.preview) +
                            '<br><div id="' + m + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div><div class="ImagePreviewBox"><table><tr><td><a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + A + '"><img id="' + z + '" alt="" /></a>' + (c.config.image_previewText || "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.") +
                            "</td></tr></table></div></div>"
                        }]
                    }]
                }]
            }, {
                id: "Link", requiredContent: "a[href]", label: c.lang.image.linkTab, padding: 0, elements: [{
                    id: "txtUrl",
                    type: "text",
                    label: c.lang.common.url,
                    style: "width: 100%",
                    "default": "",
                    setup: function (a, b) {
                        if (2 == a) {
                            var c = b.data("cke-saved-href");
                            c || (c = b.getAttribute("href"));
                            this.setValue(c)
                        }
                    },
                    commit: function (a, b) {
                        if (2 == a && (this.getValue() || this.isChanged())) {
                            var d = this.getValue();
                            b.data("cke-saved-href", d);
                            b.setAttribute("href", d);
                            if (this.getValue() || !c.config.image_removeLinkByEmptyURL)this.getDialog().addLink = !0
                        }
                    }
                }, {
                    type: "button",
                    id: "browse",
                    filebrowser: {action: "Browse", target: "Link:txtUrl", url: c.config.filebrowserImageBrowseLinkUrl},
                    style: "float:right",
                    hidden: !0,
                    label: c.lang.common.browseServer
                }, {
                    id: "cmbTarget",
                    type: "select",
                    requiredContent: "a[target]",
                    label: c.lang.common.target,
                    "default": "",
                    items: [[c.lang.common.notSet, ""], [c.lang.common.targetNew, "_blank"], [c.lang.common.targetTop, "_top"], [c.lang.common.targetSelf, "_self"], [c.lang.common.targetParent, "_parent"]],
                    setup: function (a, b) {
                        2 == a && this.setValue(b.getAttribute("target") ||
                            "")
                    },
                    commit: function (a, b) {
                        2 == a && (this.getValue() || this.isChanged()) && b.setAttribute("target", this.getValue())
                    }
                }]
            }, {
                id: "Upload",
                hidden: !0,
                filebrowser: "uploadButton",
                label: c.lang.image.upload,
                elements: [{
                    type: "file",
                    id: "upload",
                    label: c.lang.image.btnUpload,
                    style: "height:40px",
                    size: 38
                }, {
                    type: "fileButton",
                    id: "uploadButton",
                    filebrowser: "info:txtUrl",
                    label: c.lang.image.btnUpload,
                    "for": ["Upload", "upload"]
                }]
            }, {
                id: "advanced", label: c.lang.common.advancedTab, elements: [{
                    type: "hbox", widths: ["50%", "25%", "25%"],
                    children: [{
                        type: "text",
                        id: "linkId",
                        requiredContent: "img[id]",
                        label: c.lang.common.id,
                        setup: function (a, b) {
                            a == f && this.setValue(b.getAttribute("id"))
                        },
                        commit: function (a, b) {
                            a == f && (this.getValue() || this.isChanged()) && b.setAttribute("id", this.getValue())
                        }
                    }, {
                        id: "cmbLangDir",
                        type: "select",
                        requiredContent: "img[dir]",
                        style: "width : 100px;",
                        label: c.lang.common.langDir,
                        "default": "",
                        items: [[c.lang.common.notSet, ""], [c.lang.common.langDirLtr, "ltr"], [c.lang.common.langDirRtl, "rtl"]],
                        setup: function (a, b) {
                            a == f && this.setValue(b.getAttribute("dir"))
                        },
                        commit: function (a, b) {
                            a == f && (this.getValue() || this.isChanged()) && b.setAttribute("dir", this.getValue())
                        }
                    }, {
                        type: "text",
                        id: "txtLangCode",
                        requiredContent: "img[lang]",
                        label: c.lang.common.langCode,
                        "default": "",
                        setup: function (a, b) {
                            a == f && this.setValue(b.getAttribute("lang"))
                        },
                        commit: function (a, b) {
                            a == f && (this.getValue() || this.isChanged()) && b.setAttribute("lang", this.getValue())
                        }
                    }]
                }, {
                    type: "text",
                    id: "txtGenLongDescr",
                    requiredContent: "img[longdesc]",
                    label: c.lang.common.longDescr,
                    setup: function (a, b) {
                        a == f && this.setValue(b.getAttribute("longDesc"))
                    },
                    commit: function (a, b) {
                        a == f && (this.getValue() || this.isChanged()) && b.setAttribute("longDesc", this.getValue())
                    }
                }, {
                    type: "hbox",
                    widths: ["50%", "50%"],
                    children: [{
                        type: "text",
                        id: "txtGenClass",
                        requiredContent: "img(cke-xyz)",
                        label: c.lang.common.cssClass,
                        "default": "",
                        setup: function (a, b) {
                            a == f && this.setValue(b.getAttribute("class"))
                        },
                        commit: function (a, b) {
                            a == f && (this.getValue() || this.isChanged()) && b.setAttribute("class", this.getValue())
                        }
                    }, {
                        type: "text",
                        id: "txtGenTitle",
                        requiredContent: "img[title]",
                        label: c.lang.common.advisoryTitle,
                        "default": "",
                        onChange: function () {
                            g(this.getDialog())
                        },
                        setup: function (a, b) {
                            a == f && this.setValue(b.getAttribute("title"))
                        },
                        commit: function (a, b) {
                            a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("title", this.getValue()) : 4 == a ? b.setAttribute("title", this.getValue()) : 8 == a && b.removeAttribute("title")
                        }
                    }]
                }, {
                    type: "text",
                    id: "txtdlgGenStyle",
                    requiredContent: "img{cke-xyz}",
                    label: c.lang.common.cssStyle,
                    validate: CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),
                    "default": "",
                    setup: function (a,
                                     b) {
                        if (a == f) {
                            var c = b.getAttribute("style");
                            !c && b.$.style.cssText && (c = b.$.style.cssText);
                            this.setValue(c);
                            var e = b.$.style.height, c = b.$.style.width, e = (e ? e : "").match(k), c = (c ? c : "").match(k);
                            this.attributesInStyle = {height: !!e, width: !!c}
                        }
                    },
                    onChange: function () {
                        i.call(this, "info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));
                        g(this)
                    },
                    commit: function (a, b) {
                        a == f && (this.getValue() || this.isChanged()) && b.setAttribute("style", this.getValue())
                    }
                }]
            }]
        }
    };
    CKEDITOR.dialog.add("image", function (c) {
        return r(c, "image")
    });
    CKEDITOR.dialog.add("imagebutton", function (c) {
        return r(c, "imagebutton")
    })
})();